package cn.nanmeishu;

import sun.misc.Unsafe;

import java.lang.reflect.Field;

/**
 * 测试直接内存溢出
 */
public class Model6 {
    private static final int _1MB = 1024 * 1024;

    /**
     * 设置jvm：
     * -Xmx20M -XX:MaxDirectMemorySize=10M
     * @param args
     * @throws IllegalAccessException
     */
    public static void main(String[] args) throws IllegalAccessException {
        //获得某个类的所有声明的字段，即包括public、private和proteced，但是不包括父类的申明字段。
        Field unsafeField = Unsafe.class.getDeclaredFields()[0];
        unsafeField.setAccessible(true);//设置可以获取此类的私有成员变量的value
        Unsafe unsafe = (Unsafe) unsafeField.get(null);
        while (true) {
            unsafe.allocateMemory(_1MB);
        }
    }
}
